<?php
/**
 * Game_Event_UnitsMove
 *
 * Класс Game_Event_UnitsMove отвечает за события передвижения юнитов
 *
 * @author Дмитрий Кузьма <kouzma.d@gmail.com>
 * @version 1.0
 */
class Game_Event_UnitsMove extends Game_Event_Item {

	protected static $_eventType = 'units_move';
	public static $availableMoveTypes = array('death_attack', 'raid_attack', 'exploration', 'reinforcement');
	public static $availableMoveTypesWithNames = array(
		'death_attack' => 'атака',
		'raid_attack' => 'набег',
		'exploration' => 'разведка',
		'reinforcement' => 'подкрепление'
	);
	
	/**
	 * (non-PHPdoc)
	 * @see Game_Event_Item::finish()
	 */
	public function finish($isAutoDeleteEvent = true) {
		if (intval($this->_objEvent->getField('amount'))) { // Если в поле amount записан 0, значит это просто оповещение второго пользователя- ничего делать не надо
			$objUnitsGroup = new Game_Unit_UnitsGroup($this->_objEvent->getField('ID_essence'));
			if ($objUnitsGroup->id) {
				$moveType = $objUnitsGroup->getField('move_type');
				$objCoords = new Game_Coordinates($objUnitsGroup->getField('goal_coord_1'), $objUnitsGroup->getField('goal_coord_2'));
				$objPlace = $objCoords->getPlace();
				switch ($moveType) {
					case 'raid_attack': case 'death_attack':
						new Game_Battle_Battle($moveType, $objPlace, $objUnitsGroup, true);				
						break;
					case 'reinforcement':
						new Game_Battle_Reinforcement($objPlace, $objUnitsGroup, true);
						break;
					case 'exploration':
						new Game_Battle_Exploration($moveType, $objPlace, $objUnitsGroup, true);
						break;
						case 'trade':
							new Game_Battle_Trade($objPlace, $objUnitsGroup, true);
						break;
					default: throw new Exception_Game_Programming(Service_Translate::getText('Непредвиденный тип передвижения войск'));
				}
			}
		}
		if ($isAutoDeleteEvent) $this->_deleteEvent();
	}

	
}
?>